#!/usr/bin/python
# mplayer completion

extractable_options=('-vo','-vc','-ao','-ac','-vf','-af','-afm','-vfm',
                    '-vop','-fstype','-demuxer','-oac','-ovc','-of','-profile')
audio_extensions=('.mp3','.MP3','.mpg','.MPG','.ogg','.OGG','.wav','.WAV',
                    '.mid','.MID','.flac','.FLAC','.mka','.MKA','.ape','.APE',
                    '.wma','.WMA')
video_extensions=('.mpeg','.mpg','.MPEG','.MPG','.wmv','.WMV','.avi','.AVI',
                    '.asf','.ASF','.vob','.VOB','.vcd','.VCD','.mkv','.mp4')

font_extensions=('.ttf','.desc')
subtitle_extensions=('.srt','.SRT','.sub','.SUB','.txt','.TXT','.utf',
                    '.UTF','.rar','.RAR','.smi','.ssa','.SSA')

def extract_options(cmd,option,start):
    output=shellout(cmd+' '+option+' help').splitlines()
    available=False
    list=[]
    for l in output:
        if l.startswith('Available'):
            available=True
        elif available:
            s=l.split()
            if len(s) and s[0].startswith(start):
                list.append(s[0])
    return ('Options',list)

def complete_vlc(words,extra):
    group=None
    group=completefiles(words[-1],audio_extensions+video_extensions)
    
    return group,


#        -vobsub)
#            _filedir '@(idx|IDX|ifo|IFO|sub|SUB)'
#            IFS=$'\t\n'
#            COMPREPLY=( $( for i in "${COMPREPLY[@]}"; do
#                        if [[ -f $i && -r $i ]]; then
#                            printf '%s\n' ${i%.*}
#                        else
#                            printf '%s\n' $i
#                        fi
#                       done ) )
#            IFS=$' \t\n'
#            return 0
#            ;;
#        -ifo)
#            _filedir '@(ifo|IFO)'
#            return 0
#            ;;
#        -cuefile)
#            _filedir '@(bin|BIN|cue|CUE)'
#            return 0
#            ;;
#        -skin)
#            # if you don't have installed mplayer in /usr you
#            # may want to set the MPLAYER_SKINS_DIR global variable
#            if [ -n "$MPLAYER_SKINS_DIR" ]; then
#                skinsdir=$MPLAYER_SKINS_DIR
#            else
#                skinsdir=/usr/share/mplayer/Skin
#            fi
#
#            IFS=$'\t\n'
#            for i in ~/.mplayer/Skin $skinsdir; do
#                if [[ -d $i && -r $i ]]; then
#                    for j in $( compgen -d $i/$cur ); do
#                        COMPREPLY[$k]=${j#$i/}
#                        k=$((++k))
#                    done
#                fi
#            done
#            IFS=$' \t\n'
#            return 0
#            ;;
#        -cdrom-device)
#            _cd_devices
#            _dvd_devices
#            return 0
#            ;;
#        -dvd-device)
#            _dvd_devices
#            return 0
#            ;;
#        -mixer|-dvdauth|-fb|-zrdev)
#            cur=${cur:=/dev/}
#            _filedir
#            return 0
#            ;;
#        -edl|-edlout|-lircconf|-menu-cfg|-playlist|-csslib|-dumpfile| \
#        -subfile|-vobsub|-aofile|-fbmodeconfig|-include|-o|-dvdkey| \
#        -passlogfile)
#            _filedir
#            return 0
#            ;;
#        -autoq|-autosync|-loop|-menu-root|-speed|-sstep|-aid|-alang| \
#        -audo-demuxer|-sub-demuxer|-demuxer|-bandwidth|-cache|-chapter| \
#        -dvd|-dvdangle|-fps|-frames|-mc|-passwd|-user|-sb|-srate|-ss|-vcd| \
#        -vi|-vid|-vivo|-ffactor|-sid|-slang|-spualign|-spuaa|-spugauss| \
#        -vobsubid|-delay|-bpp|-brightness|-contrast|-dfbopts|-display| \
#        -fbmode|-geometry|-guiwid|-hue|-icelayer|-screen[wh]|-wid| \
#        -monitoraspect|-monitor-dotclock|-monitor-[hv]freq|-panscan| \
#        -saturation|-xineramascreen|-zrcrop|-zrnorm|-zrquality| \
#        -zr[xy]doff|-zr[vh]dec|-aspect|-pp|-x|-y|-xy|-z|-stereo| \
#        -audio-density|-audio-delay|-audio-preload|-endpos|-osdlevel| \
#        -ffourcc|-sws|-channels|-skiplimit|-format|-ofps|-aadriver| \
#        -aaosdcolor|-aasubcolor|-vobsubout|-vobsuboutid|-vobsuboutindex| \
#        -sub-bg-alpha|-sub-bg-color|-sub-cp|-sub-delay|-sub-fps|-sub-pos| \
#        -sub-align|-sub-width|-subfont-blur|-subfont-outline| \
#        -subfont-autoscale|-subfont-encoding|-subfont-osd-scale| \
#        -subfont-osd-text)
#            return 0
#            ;;
#        -lavdopts)
#            COMPREPLY=( $( compgen -W 'ec er= bug= idct= gray' -- "$cur" ) )
#            return 0
#            ;;
#        -lavcopts)
#            COMPREPLY=( $( compgen -W 'vcodec= vqmin= vqscale= vqmax= mbqmin= \
#                mbqmax= vqdiff= vmax_b_frames= vme= vhq v4mv keyint= \
#                vb_strategy= vpass= aspect= vbitrate= vratetol= vrc_maxrate= \
#                vrc_minrate= vrc_buf_size= vb_qfactor= vi_qfactor= vb_qoffset= \
#                vi_qoffset= vqblur= vqcomp= vrc_eq= vrc_override= \
#                vrc_init_cplx= vqsquish= vlelim= vcelim= vstrict= vdpart \
#                vpsize= gray vfdct= idct= lumi_mask= dark_mask= tcplx_mask= \
#                scplx_mask= naq ildct format= pred qpel precmp= cmp= subcmp= \
#                predia= dia= trell last_pred= preme= subq= psnr mpeg_quant aic \
#                umv' -- "$cur" ) )
#            return 0
#            ;;
#        -ssf)
#            COMPREPLY=( $( compgen -W 'lgb= cgb= ls= cs= chs= cvs=' \
#                -- "$cur" ) )
#            return 0
#            ;;
#        -jpeg)
#            COMPREPLY=( $( compgen -W 'noprogressive progressive nobaseline \
#                baseline optimize= smooth= quality= outdir=' -- "$cur" ) )
#            return 0
#            ;;
#        -xvidopts)
#            COMPREPLY=( $( compgen -W 'dr2 nodr2' -- "$cur" ) )
#            return 0
#            ;;
#        -xvidencopts)
#            COMPREPLY=( $( compgen -W 'pass= bitrate= fixed_quant= me_quality= \
#                4mv rc_reaction_delay_factor= rc_averaging_period= rc_buffer= \
#                quant_range= min_key_interval= max_key_interval= mpeg_quant \
#                mod_quant lumi_mask hintedme hintfile debug keyframe_boost= \
#                kfthreshold= kfreduction=' -- "$cur" ) )
#            return 0
#            ;;
#        -divx4opts)
#            COMPREPLY=( $( compgen -W 'br= key= deinterlace q= min_quant= \
#                max_quant= rc_period= rc_reaction_period= crispness= \
#                rc_reaction_ratio= pass= vbrpass= help' -- "$cur" ) )
#            return 0
#            ;;
#        -info)
#            COMPREPLY=( $( compgen -W 'name= artist= genre= subject= \
#                copyright= srcform= comment= help' -- "$cur" ) )
#            return 0
#            ;;
#        -lameopts)
#            COMPREPLY=( $( compgen -W 'vbr= abr cbr br= q= aq= ratio= vol= \
#                mode= padding= fast preset= help' -- "$cur" ) )
#            return 0
#            ;;
#        -rawaudio)
#            COMPREPLY=( $( compgen -W 'on channels= rate= samplesize= format=' \
#                -- "$cur" ) )
#            return 0
#            ;;
#        -rawvideo)
#            COMPREPLY=( $( compgen -W 'on fps= sqcif qcif cif 4cif pal ntsc w= \
#                h= y420 yv12 yuy2 y8 format= size=' -- "$cur" ) )
#            return 0
#            ;;
#        -aop)
#            COMPREPLY=( $( compgen -W 'list= delay= format= fout= volume= mul= \
#                softclip' -- "$cur" ) )
#            return 0
#            ;;
#        -dxr2)
#            COMPREPLY=( $( compgen -W 'ar-mode= iec958-encoded iec958-decoded \
#                mute ucode= 75ire bw color interlaced macrovision= norm= \
#                square-pixel ccir601-pixel cr-left= cr-right= cr-top= cr-bot= \
#                ck-rmin= ck-gmin= ck-bmin= ck-rmax= ck-gmax= ck-bmax= ck-r= \
#                ck-g= ck-b= ignore-cache= ol-osd= olh-cor= olw-cor= olx-cor= \
#                oly-cor= overlay overlay-ratio= update-cache' -- "$cur" ))
#            return 0
#            ;;
#        -tv)
#            COMPREPLY=( $( compgen -W 'on noaudio driver= device= input= freq= \
#                outfmt= width= height= buffersize= norm= channel= chanlist= \
#                audiorate= forceaudio alsa amode= forcechan= adevice= audioid= \
#                volume= bass= treble= balance= fps= channels= immediatemode=' \
#                -- "$cur" ) )
#            return 0
#            ;;
#        -mf)
#            COMPREPLY=( $( compgen -W 'on w= h= fps= type=' -- "$cur" ) )
#            return 0
#            ;;
#        -cdda)
#            COMPREPLY=( $( compgen -W 'speed= paranoia= generic-dev= \
#                sector-size= overlap= toc-bias toc-offset= skip noskip' \ 
#                -- "$cur" ) )
#            return 0
#            ;;
#        -input)
#            COMPREPLY=( $( compgen -W 'conf= ar-delay ar-rate keylist cmdlist \
#                js-dev file' -- "$cur" ) )
#            return 0
#            ;;
#        -af)
#            COMPREPLY=( $( compgen -W 'resample resample= channels channels= \
#                format format= volume volume= delay delay= pan pan= sub sub= \
#                surround surround=' -- "$cur" ) )
#            return 0
#            ;;
#        -af-adv)
#            COMPREPLY=( $( compgen -W 'force= list=' -- "$cur" ) )
#            return 0
#            ;;
#    esac
#
#    case $cur in
#        -*)
#            COMPREPLY=( $( compgen -W '$( $cmd -list-options 2>/dev/null | \
#                sed -ne '1,/^[[:space:]]*Name/d' \
#                    -e "s/^[[:space:]]*/-/" -e "s/[[:space:]:].*//" \
#                    -e "/^-\(Total\|.*\*\)\{0,1\}$/!p" )' -- "$cur" ) )
#            ;;
#        *)
#            _filedir '@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|ASF|vob|VOB|bin|BIN|dat|DAT|vcd|VCD|ps|PS|pes|PES|fl[iv]|FL[IV]|fxm|FXM|viv|VIV|rm?(j)|RM?(J)|ra?(m)|RA?(M)|yuv|YUV|mov|MOV|qt|QT|mp[234]|MP[234]|m4[av]|M4[AV]|og[gmavx]|OG[GMAVX]|w?(a)v|W?(A)V|dump|DUMP|mk[av]|MK[AV]|m4a|M4A|aac|AAC|m[24]v|M[24]V|dv|DV|rmvb|RMVB|mid|MID|t[ps]|T[PS]|3g[p2]|mpc|MPC|flac|FLAC|vro|VRO|divx|DIVX|aif?(f)|AIF?(F)|m2ts|M2TS|vdr|VDR|xvid|XVID|ape|APE)'
#            ;;
#    esac
#
#    return 0
#}
#complete -o filenames -F _mplayer mplayer mencoder gmplayer kplayer
#}

addcompleter('vlc',complete_vlc)

